package com.ktjy;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Demo6 {
    public static void main(String[] args) throws InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
        //对象的使用
        //1.创建对象
//        Person person=new Person();
//        //2.属性赋值
//        person.name="张三";
//        //2.方法覅用
//        person.getName();

        //使用反射怎么使用对象
        //1.创建对象(他只能调用person类无参构造创建对象)
//        Class clz=Person.class;
//        Object o = clz.newInstance();
        //2.创建对象
        Class clz=Person.class;
        //先获取构造方法
        Constructor constructor = clz.getConstructor(String.class, Integer.class);
        Object person2 = constructor.newInstance("张三", 18);

        //给属性赋值
        //先要获取属性
        Field name = clz.getField("name");
        Field age = clz.getDeclaredField("age");

        name.set(person2,"李四");
        age.setAccessible(true);
        age.set(person2,19);

        //调用方法
        //先要获取方法
        Method show = clz.getMethod("show");
        show.invoke(person2);
    }
}
